/**
 * 这里就直接写单独的函数，作为数据校验，不做一个类，在类里面定义函数
 */

const app = require("../app");

const errorTypes = require('../constants/error-types');

const service = require('../service/user.service');

const md5Password = require('../utils/password-handle');

const verifyUser = async (ctx, next) => {
    // 1、获取客户端用户名，和密码
    let { name, password } = ctx.request.body;
    console.log(name, password);
    // console.log(ctx.request.body);

    // 2、判断用户名或者密码不能为空
    if (!name || !password) {
        const error = new Error(errorTypes.NAME_OR_PASSWORD_IS_REQUIRED);
        //发射一个错误信息
        return ctx.app.emit('error', error, ctx);
    }


    // 3、判断这次注册的用户名有没有注册过
    let result = await service.getUserByName(name);//数据库查询的结果 是一个数组
    if (result.length) {
        //注册过
        console.log('注册过')
        const error = new Error(errorTypes.USER_ALREADY_EXISTS);
        return ctx.app.emit('error', error, ctx);
    }

    // 数据没有问题，可以入库了
    await next();

}

const handlePassword = async (ctx, next) => {
    const { password } = ctx.request.body;
    //密码加密
    ctx.request.body.password = md5Password(password);

    console.log(ctx.request.body, '加密');

    await next();
}

module.exports = {
    verifyUser,
    handlePassword
};
